This disclosure relates to data processing.
In some data processing applications, so-called branch prediction is used to predict instances of non-linear program flow, such as the outcome (branch taken or branch not taken) from conditional program flow branching instructions.
In some examples, the branch prediction process runs ahead of the execution of the instructions to provide the instructions speculatively in time to avoid so-called starvation (which would occur if insufficient instructions (that were next to be executed) were fetched in time for execution.
In order to predict the presence of a branch into a given program code portion, a historical data store such as a so-called branch target buffer (BTB) can provide an indication of previously taken branches at particular program counter (PC) values. Again, in some examples, branch prediction can be provided by a so-called BPB (Branch Prediction Buffer) which stores historical direction data (branch taken or not taken) to steer a prediction.